package Twice.day11;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Author: lya
 * @Description: 本类的作用描述:
 * @CreateDate: 2019/7/30
 * @Version: 1.0
 */
public class ArrayListMethodDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        //清空集合
        //list.clear();


        //判断集合中是否存在元素
        list.isEmpty();

        //获取集合中的元素的个数
        list.size();

        //根据下标获取 - java.lang.IndexOutOfBoundsException
        list.get(1);

        //找出集合中的某个元素第一次出现的位置
        list.indexOf("a");

        //判断集合中是否包含某个元素
        list.contains("a");

        //移除集合中的第一次出现的元素
        list.remove("a");

        //根据下标进行移除
        list.remove(1);



        //思考 - List<Integer> list = new ArrayList<>();
        //list.add(1);list.add(2);//list.add(3);//   list.remove(1);

        //关于集合的遍历
        //1 - 直接输出
        //2 - 通过普通for循环进行遍历
        for (int i = 0; i <list.size(); i++) {
            System.out.println(list.get(i));
        }
        //3 - 通过增强for循环
        for (String s : list) {
            System.out.println(s);
        }


        //4 - 迭代器 - JCF特有的一种迭代的方式.
        //采用的是迭代器模式
        //出现的原因是;由于每种具体的集合,底层的数据结构是不一样的 - 导致遍历的方式也是不一样
        //每个集合的底层都会实现iterator方法.
        //意義 - 不需要關心集合的底層,每個集合底層都是重寫了iterator方法,為我們訪問遍歷不同的
        //集合提供了統一的方式,不需要太關注遍歷的細節操作.本質上增強for循環底層也是採用迭代器模式
        Iterator<String> iter = list.iterator();
        //此處的iter就是一個迭代器對象
        while(iter.hasNext()){
            String s = iter.next();
            System.out.println(s);
        }

        //如果仍有元素可以被迭代,則返回true,否則返回false.



    }

}
